package com.ts.api.module.match.plan.internal.qualification.strategy;

import com.ts.api.module.match.plan.internal.qualification.model.PlanQualification;
import com.ts.api.module.match.plan.internal.qualification.model.PlanQualificationResult;
import com.ts.api.module.match.plan.model.AbstractPlanMatch;

/**
 *  过滤资质策略类
 *
 *  @author Pan
 */
public interface PlanQualificationStrategy<T extends AbstractPlanMatch> {

    /**
     *  转换资质类
     *
     *  @param  abstractPlanMatch    抽象资质实体类
     *  @return PlanQualification    资质验证实体
     */
    PlanQualification convert(T abstractPlanMatch);

    /**
     *  过滤用户资质与计划资质，基础过滤特性
     *
     *  @param  planQualification    计划用户资质类
     *  @return PlanQualificationResult
     */
    PlanQualificationResult filter(PlanQualification planQualification, T abstractPlanMatch);
}
